home *** CD-ROM | disk | FTP | other *** search
/ Utilities Professional 1-1500 / Utilities Professional 1-1500 (1994)(WPD)[!].iso / 00010250 / var0159.dms / var0159.adf / removexeno.s < prev    next >
Text File  |  1987-01-01  |  909b  |  42 lines

  1. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2. ;
  3. ;    Check for and Remove the Xeno Virus
  4. ;
  5. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  6.  
  7.     xref    _DOSBase
  8.  
  9.     xdef    _CheckRAMForXeno
  10.  
  11.  
  12. _CheckRAMForXeno
  13.  
  14.     move.l    _DOSBase,a0        ; Get addr of Open() Vector
  15.     sub.w    #$1c,a0
  16.     move.l    (a0),a0
  17.  
  18.     move.l    a0,d0            ;: If Bit 0 of the Address is set,
  19.     btst    #0,d0            ;: then it's not really an address
  20.     bne.s    .NoVirus        
  21.     
  22.     cmp.l    #$B47C03EE,(a0)
  23.     bne.s    .NoVirus
  24.     cmp.l    #$67000224,4(a0)
  25.     bne.s    .NoVirus
  26.  
  27.     ;:: If we're here, we're fairly sure A0 is pointing to the
  28.     ;:: base of the Xeno virus (well, not it's base, but the address
  29.     ;:: of the first vector it stole, the Open() one.
  30.     ;:: So we'll nuke it.  8-)
  31.  
  32.     move.w    #$6000,$4(a0)
  33.     move.w    #$603E,$240(a0)
  34.     move.w    #$601E,$29C(a0)
  35.     
  36.     moveq    #1,d0            ;:: Return TRUE
  37.     rts
  38.  
  39. .NoVirus                ;:: Nothing here, return FALSE
  40.     moveq    #0,d0
  41.     rts
  42.